// TodoList全局数据模型
import { useState } from 'react';

// 定义Todo项的接口
export interface TodoItem {
  id: string;
  content: string;
  completed: boolean;
}

// 自定义Hook，用于管理TodoList的状态
const useTodoList = () => {
  // 使用useState钩子管理todos数组
  const [todos, setTodos] = useState<TodoItem[]>([]);

  // 添加新的todo项
  const addTodo = (content: string) => {
    const newTodo: TodoItem = {
      id: Date.now().toString(), // 使用时间戳作为唯一ID
      content,
      completed: false,
    };
    setTodos([...todos, newTodo]); // 创建新数组，保持不可变性
  };

  // 切换todo项的完成状态
  const toggleTodo = (id: string) => {
    setTodos(
      todos.map((todo) =>
        todo.id === id ? { ...todo, completed: !todo.completed } : todo
      )
    );
  };

  // 删除todo项
  const deleteTodo = (id: string) => {
    setTodos(todos.filter((todo) => todo.id !== id));
  };

  // 编辑todo项内容
  const editTodo = (id: string, content: string) => {
    setTodos(
      todos.map((todo) => (todo.id === id ? { ...todo, content } : todo))
    );
  };

  return {
    todos,
    addTodo,
    toggleTodo,
    deleteTodo,
    editTodo,
  };
};

export default useTodoList; 